Method and apparatus for efficient delta pricing

ABSTRACT

A method includes generating a delta price and generating a final price using the delta price. A process and system provide an ability to determine a product&#39;s final price with a selected set of features in which multiple configurations are to be generated. The ability to determine such final prices can be based on the ability to determine the change in price between one configuration of a product and that of another product configuration (e.g. the product configured with the desired feature(s)). A customer is able to select one or more features, and so view the effect on the product&#39;s final price, as well as compare the prices (and incremental price differences) between various configurations of a given product. This increases the likelihood of the purchase being made, because it provides the potential purchaser with the final price earlier in the sales cycle.

This application is a continuation of application Ser. No. 10/061,896,filed Feb. 1, 2002, now U.S. Pat. No. 7,584,155 entitled “Method andApparatus for Efficient Delta Pricing.”

BACKGROUND OF THE INVENTION

Field of the Invention

The present invention relates to transacting commerce over a networkand, more particularly, to a method and apparatus for processinginformation related to such commercial transactions.

Description of the Related Art

Historically, information regarding commercially available products hasbeen disseminated using various types of well-known media, includingprint, radio, television, and the like. With the advent of the Internet,a wide array of product information has become even more accessible tothe average person. Entities providing such product information havebeen assisted in their endeavor by networking and client/servertechnology that has become available in approximately the last ten tofifteen years. Such technology typically allows a number of usersemploying client terminals to communicate with a remote server computerin order to transfer information therebetween. This information mayinclude text, data in any one of a number of formats, graphicalinformation, streaming audio and video, and other such information. Tofacilitate such transfers, client terminals can employ a “web” browserthat provides access to a server via a graphical user interface (GUI).The server responds to requests from the client by providing informationin the form of a “web page.” One popular collection of servers usesHypertext Transfer Protocol (HTTP) to provide information. This networkof servers and web pages is commonly known as the “World Wide Web”(WWW). A collection of related web pages is often referred to as a“website” or more simply a “site.” Information in the WWW is typicallypresented as web pages which contain text along with standardizedformatting and control symbols such as those present in mark-uplanguages such as Hypertext Mark-up Language (HTML). HTML provides basichypertext document formatting and allows a server to specify “links” toother servers and files. Use of an HTML-compliant browser involvesspecification of a link via a Uniform Resource Locator (URL). Upon suchspecification, the user's client terminal makes a TCP/IP request to theserver identified in the link and receives an HTML file that isinterpreted by the browser so that an electronic HTML document made upof one or more web pages may be displayed on the client's terminal.

Unfortunately, however, the use of the functionality provided bytechnologies that allow the selection and purchase of products (e.g.,e-commerce websites) is less than ideal. Client-side performance is asignificant factor in such a network environment, especially in ane-commerce context, and factors that degrade website performancelikewise degrade the purchasing experience. Fundamentally, a websitethat is slow (and therefore aggravating to use) can result in lostsales. Thus, factors that degrade client-side performance should beavoided if the user's buying experience is to be a pleasant one. Anexample of such a factor is the time involved in accessing a productinformation database, especially where the database access is performedover a network of some sort (e.g., a storage area network (SAN)). Sucheffects can depend on several factors, with certain of these factorsbeing quite intuitive in nature.

In the case where a customer desires pricing information for variousconfigurations of a selected product, pricing of a base configuration ofa product or a product with a pre-set, “standard” feature set isrelatively straightforward. However, as the customer adds features toand removes features from the selected product, the product's finalprice may change according to not only the features added or removed,but also according to any package pricing, discounts, variations intaxes and/or shipping charges, and other such adjustments. Moreover, theselection of one feature may change the price of another selectedfeature, require other upgrades, obviate the need for certain features,and/or may change the classification of the current package altogether.There may also be differences in pricing for a given feature based onthe customer (e.g., the customer's status, location, contractualagreement or the like), product-specific discounting schemes, and othersuch criteria. Further, other factors such as shipping may changerelative to the configuration, number of items, and so on.

For example, in an e-commerce scenario, if the price of a single productconfiguration is desired, various factors (e.g., user identity,geographical location, promotions, volume and the like) can be takeninto account when pricing the product (or service) for purchase (e.g.,via an e-commerce website). This pricing request results in a databaseaccess that gathers the requisite pricing information. An example ofsuch a pricing system (or pricing engine) is described in U.S. Pat. No.5,878,400, issued Mar. 2, 1999, by Carter and entitled “Method andApparatus for Pricing Products in Multi-Level Product and OrganizationalGroups.” Thus, pricing on a component-by-component level is generallyavailable.

In the situation where a product is available in a number ofconfigurations (each of which represent a given set of features),however, each product configuration will typically include differentcombinations of the available features. Each such configuration needs tobe priced accordingly. This requires multiple accesses, typically over anetwork, to retrieve the necessary data and generate the desired pricinginformation. The problem is compounded when the pricing information fora given feature (or other cost) depends upon the features selected in agiven configuration. In an e-commerce system such as that describedpreviously, this is especially problematic if the user desires tocompare pricing between a number of configurations simultaneously. Thisis because the user is forced to wait for all the database accesses tocomplete before a complete comparison can be made. Thus, delays areparticularly evident in the situation where a user desires pricinginformation for a number of product configurations simultaneously.

For example, as noted, a prospective purchaser may desire to configureand price an automobile. The prospective purchaser does not want to waituntil they have specified all the possible options in order to view aprice. In fact, the prospective purchaser may desire to view both arunning total price, as well as the incremental price of each item thatthe prospective purchaser is currently considering. For example, theprospective purchaser may have already configured a base vehicle, but isprovided the option of selecting a “CD Player” or a “High-End StereoSystem.” The decision on which to purchase is typically based on, amongother criteria, on the change in price caused by each option. One optionis to display the $500 price of the CD Player and the $750 price of theHigh-End System. However, the currently configured base vehicle alreadyhas the standard stereo (costing $200). The manufacturer would preferthat the prospective purchaser realize that the CD Player only costs$300 additionally and the High-End System only costs $550 additionally.This is effectively an upsell opportunity.

Similar to seeing the choice for radio options, a potential purchasermight also see the option of purchasing leather seats. Though theleather seats only cost $1500, the leather seats are simply not offeredon the base vehicle and are instead offered only on the Luxury model.The Luxury package costs $2000, bringing the cost of the currentconfiguration to $3500. To make the example more complete, consider thatthe currently priced base vehicle costs $19,000, but a purchaserreceives a $1000 rebate check if the vehicle costs $20,000 or more. Eventhough the Luxury package and leather seats add $3500 to the currentprice, in fact a $1,000 rebate is given (resulting in a net differenceof only $2500).

In light of the variations presented in the foregoing example, and themyriad other possible variations and combinations thereof, incrementaldifferences in price (i.e., the difference between the price of thecurrently configured vehicle and another configuration) need to becalculated, and the price of the vehicle configured with the variousoptions presented. The example demonstrates that this requires someconfiguration integration (i.e., to know the base radio needs to beremoved, or the Luxury package needs to be added). A configuration withthe leather seats, combined with the rebate, illustrates that the oldproduct price cannot simply be manipulated by adding/subtracting theprices of the individual options. To get the true price, the pricingengine must calculate the product's total price with each desired set ofoptions. As will be apparent to one of skill in the art, when suchoperations must be performed for every option presented to a prospectivepurchaser, tens or even hundreds of such operations must be performedevery time the information is redisplayed, which should occur every timethe potential purchaser adds or removes an option from the givenconfiguration.

One method of addressing this need is to call a pricing engine (throughthe pricing service or using the methods directly), and so create acollection of items and price all the items together in the context of aquote. To perform pricing operations using such an approach, a separatequote with all of the base items must be individually created, with thequote including the options being added to the base configuration (e.g.,a new radio, or leather seats and the luxury package together) andexcluding the options to be removed (e.g., the stock radio). Each quoteis priced separately with no benefit from having already retrieved theappropriate adjustments from the database or the previously-calculatedbase price. This creates a multitude of database accesses, with theattendant problems discussed earlier.

Another alternative is to simply price all possible (or allowable)combinations of features, and then save the pricing and featureinformation thus generated in a database accessible by the web serverpresenting the information to the customer. While conceptually simple,this solution suffers from several infirmities. Such a database would bequite large by a relative measure, increasing retrieval time, as well asthe cost of maintaining such information. Also, the database would needto be accessed each time a new quote was required, entailing theaforementioned increase in retrieval time for each such quote. Eachaccess, in turn, would necessitate the regeneration of the web page todisplay the results of each such access, further delaying the display ofpricing information. Also, because of the large number of potentialconfigurations, generation of this pricing data is often impractical.

Thus, the list price of a given feature may not reflect the price toactually be paid by the customer for a variety of reasons, and sodetermination of a product's final price can be a complex, andtime-consuming, exercise. By contrast, when investigating the costsassociated with various combinations of features, and when employingweb-based technology in general, providing the desired pricinginformation quickly and accurately improves a customer's buyingexperience, as well as increasing the likelihood that the customer willactually make a purchase. Moreover, the earlier in the navigation of thee-commerce website this information can be provided to the prospectivepurchaser, the more likely the prospective purchaser is to complete thepurchase.

Furthermore, prospective purchasers are also more likely to make apurchase in the scenario where the prospective purchaser sees a givencombination of features (products, services or the like) as costing onlyan incremental amount over a “base” (or given) configuration. By makingthe increment the focus of the prospective purchaser's attention,emphasis on the total outlay is minimized in the user's mind. This canencompass any costs associated with a given purchase.

SUMMARY OF THE INVENTION

The inventors have thus effected the ability to generate delta pricinginformation, and so price features (products, services or the like)incrementally in an e-commerce environment. Moreover, described hereinis a software architecture capable of generating such delta pricinginformation in a fast, efficient manner, to provide the purchaser withan enjoyable buying experience. Sales by the seller of such products,services or the like are increased thereby, as well as by shifting theprospective purchaser's focus to any additional incremental cost (orlack thereof, and, optionally, by comparison to the feature's actualcost).

In one embodiment of the present invention, a method of generating aprice is disclosed. The method includes generating a delta price andgenerating a final price using the delta price.

In another embodiment of the present invention, a software architectureis disclosed. The software architecture includes a quote processorconfigured to process a super-quote. The super-quote is configured tocause a number of database accesses.

In yet another embodiment of the present invention, a method ofretrieving information is disclosed. The method includes performing aplurality of queries on a database, receiving a number of data at apricing engine in response to the queries, and providing at least one ofthe data without accessing said database.

The foregoing is a summary and thus contains, by necessity,simplifications, generalizations and omissions of detail; consequently,those skilled in the art will appreciate that the summary isillustrative only and is not intended to be in any way limiting. As willalso be apparent to one of skill in the art, the operations disclosedherein may be implemented in a number of ways, and such changes andmodifications may be made without departing from this invention and itsbroader aspects. Other aspects, inventive features, and advantages ofthe present invention, as defined solely by the claims, will becomeapparent in the non-limiting detailed description set forth below.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be better understood, and its numerousobjects, features, and advantages made apparent to those skilled in theart by referencing the accompanying drawings.

FIG. 1A is a flow diagram illustrating an example of operationsperformed in providing delta pricing information.

FIG. 1B is a flow diagram illustrating the determination of pricing fora given configuration.

FIG. 1C is a block diagram illustrating the software architecture usedto support the processes depicted in FIGS. 1A and 1B.

FIG. 2 is a first flow diagram illustrating a process in which pricingfor one or more items is determined.

FIG. 3 is a second flow diagram illustrating a process in which pricingfor one or more items is determined.

FIG. 4 is a third flow diagram illustrating a process in which pricingfor one or more items is determined.

FIG. 5A is a fourth flow diagram illustrating a process in which pricingfor one or more items is determined.

FIG. 5B is a diagram illustrating an example data structure of asuper-quote.

FIG. 6 is a fifth flow diagram illustrating a process in which pricingfor one or more items is determined.

FIG. 7 is a block diagram illustrating a computer system suitable forimplementing embodiments of the present invention.

FIG. 8 is a block diagram illustrating the interconnection of thecomputer system of FIG. 7 to client and host systems.

The use of the same reference symbols in different drawings indicatesidentical items, unless otherwise indicated.

DETAILED DESCRIPTION OF THE INVENTION

The following is intended to provide a detailed description of one ormore example embodiments of the invention and should not be taken to belimiting of the invention itself. Rather, any number of variations mayfall within the scope of the invention which is defined in the claimsfollowing the description.

Introduction

The present invention provides a process and a supporting softwarearchitecture that provide the ability to quickly and efficientlydetermine a product's final price with a selected set of features,particularly in a situation in which changes in configuration (e.g.,made by a potential purchaser) are to be immediately reflected in theproduct's final price, in which multiple such configurations are to begenerated (e.g., and presented to a prospective buyer, typicallysimultaneously), and the like. The ability to determine such finalprices can be based on the ability to determine the change in pricebetween one configuration of a product (e.g., the price of the product'sbase configuration) and that of another product configuration (e.g., theproduct configured with the desired feature(s)). The term “final price,”as used herein, refers to the ultimate price to be paid by the consumer,whether that be in the form of a static value for only that productwithout consideration of any other product or criteria, or theincremental (delta) price of that product when selected in addition toany number of other products or criteria.

A customer can access this functionality using, for example, a network(e.g., the Internet) using a WWW interface (e.g., a web browser). Usinga website employing such a software architecture (also referred toherein as a website architecture), a customer is able to select one ormore features, and so view the effect on the product's final price, aswell as compare the prices (and incremental price differences) betweenvarious configurations of a given product. This increases the likelihoodof the purchase being made, because it provides the potential purchaserwith the final price earlier in the sales cycle.

The selected features determine, at least in part, the final price ofthe product with the given product configuration. Additionally, suchproduct configurations can be predefined (e.g., a stored productconfiguration, a product configuration generated based on generalcriteria provided by the customer, or other such sources). Once thedesired features are selected, the selected product configuration andfinal price can be displayed for the given configuration. Moreover, theconfiguration's final price can include peripheral costs and effectsthereon by the selected features of the given configuration. Theforegoing functionalities can be provided, for example, by softwarereferred to herein as a quote processor, which enables the efficientpricing of a product based on the product's features.

A pricing methodology according to the present invention addresses theshortcomings of various possible alternatives through the use of asuper-quote (a quote containing sufficient information to permit thegeneration of a number of quotes) and persistence of the data thusretrieved. For example, in the case where multiple quotes must begenerated to address various configurations of a product desired by acustomer, a number of products must be priced (e.g., displaying anentire catalog page for a customer or other such multiple pricingsituation), a software architecture according to the present inventioncombines those multiple quotes into a super-quote. The use of asuper-quote allows the necessary information to be retrieved from apricing database using fewer accesses than would be required usingseparate accesses for each quote (typically, a single access). Thisreduces the number of times a database containing the desiredinformation must be accessed. As a result, the time spent accessing thedatabase is reduced. This is of importance because accessing thedatabase can be a relatively slow operation, especially inconfigurations where the database is accessed over a communications linksuch as a network. In fact, the results generated by the query for thesuper-quote can be stored in memory (referred to herein as memorypricing), which speeds the pricing operations considerably in comparisonto the time required to access the database (typically stored on somesort of fixed media). Moreover, because the data retrieved in responseto a request for a super-quote persists in memory, that data remainsavailable for subsequent queries, thus further eliminating the need toaccess the database. These increases in speed provide the potentialpurchaser with a more pleasant purchasing experience, increasing thelikelihood of the purchase actually being made.

In effect, a software architecture supporting delta pricing such as thatdescribed herein breaks the pricing operation into two parts: a queryoperation and an operation which calculates the price of the desiredconfiguration. The query operation, as a result of using a super-quote,is typically a single event, with the attendant benefits discussedherein. Because the information thus retrieved is persisted, the latteris simplified, as the data needed for the calculations is readilyavailable.

Delta Pricing

As has been noted, the earlier in the purchasing experience a potentialpurchaser can be shown a final price, the more likely the potentialpurchaser is to actually purchase the product(s) (or services or thelike) being considered. The final price will reflect the features (orcombination of products/services, or similar effects) selected by thepotential purchaser. The final price can also be made to reflect otherparameters, such as special pricing based on any one of a number ofparameters (e.g., the purchaser's identity, geographic location and thelike), peripheral costs (e.g., taxes, shipping charges, handling chargesand the like), time of the purchase (e.g., time-based discounts,on-/off-season rates, and the like), and other such parameters. Itshould be noted that delta pricing techniques need not comprehend allinputs to a final price. For example, while the selected features of aproduct may be employed in arriving at a final price for the givenproduct configuration, peripheral costs may be excluded from suchcalculations. Alternatively, not all the features selected by apotential purchaser need be included in such calculations. It will beapparent to one of skill in the art that delta pricing techniques can beapplied to any appropriate subset of price inputs can be considered whenarriving at a final price for a product.

FIG. 1A is a flow diagram illustrating an example of the operation of auser interface that provides functionality according to embodiments ofthe present invention. First, the potential purchaser identifies theitem(s) that the potential purchaser desires to purchase (step 10). Thisitem (or items) can be a product, a service or some other item availablefor purchase (or, in fact, for lease or by some other commercialarrangement). Next, the potential purchaser selects the features theydesire (step 15). It should be noted that this action can also bedirected to (or additionally include) the selection of other products,services or the like. Any such actions can be made to alter the finalprice of the selected features, products, services or the like,including effects on peripheral costs. A determination is then made asto the pricing of the desired product/service configuration,product/service combination or the like (step 20). As noted previously,a product's final price can be altered based on any number of effects.Once determined, final pricing information is then displayed (step 25).This can be, for example, the display of pricing information on a WWWpage generated by an c-commerce website. Next, the user is given theoption of altering their selections (step 30), which if taken allows theuser to change the product's/service's configuration, theproducts/services selected and to make other changes, as appropriate tothe situation. It will be noted that this process can easily be modifiedto address the situation in which the potential purchaser desires toenter a number of configurations at one time, in order to have a numberof configurations (and their corresponding final prices) generated anddisplayed for comparison therebetween.

FIG. 1B is a flow diagram illustrating an example of the operationsperformed in pricing one or more configurations of a product, service orthe like when employing a user interface that provides functionalityaccording to embodiments of the present invention. First, the item to bepriced (e.g., the product configuration (feature set)) is determinedfrom information provided by the potential purchaser (step 50). This caninclude, for example, generating a list of possible features, and thendetermining which of those features are desired. Given this information,a determination is made as to the final price of the item (e.g., theconfigured product) (step 55). Once this determination is made, thefinal price (e.g., for the given configuration of the product) isreturned (step 60).

The need for delta pricing, and certain of its advantages, can best beunderstood in the context of an example, similar to that previouslydiscussed. In the context of a vehicle offered for sale, it will benoted that, for example, vehicle manufacturers may not sell a carwithout an audio system of some sort. To upgrade from a standard AMradio (costing $200, as a “base” configuration) to an FM radio (costing$600), the user will typically not be charged the full price of the FMradio, but instead will incur the incremental cost of that feature. Infact, the purchaser need never be concerned with the fact that theabsolute price of the FM radio is $600, because the FM radio will alwayshave been swapped for another option (e.g., the AM radio). This is trueof any situation in which a product feature is mandatory, and onealternative is swapped for another. Thus, where the category of productis mandatory, the purchaser is simply trying to decide which productfeature is the desired one. The problem changes from a question of “whatis the price of the product” to “what is the difference in price,because one of the alternatives will have to be purchased.” This is acomplex pricing situation in which a base product provides some minimumprice, and alternatives are swapped for one another, altering the priceas such changes are made.

This kind of general situation, and the problem addressed by embodimentsof the present invention, demonstrates that there is substantial marketvalue in being able to provide the incremental price at a number ofpoints in the purchasing process, as well as being able to provide suchinformation even before the potential purchaser has committed to theircurrent selection (e.g., selected feature set), which provides themarketing advantages discussed herein. If the potential purchaser mustgo through and indicate they desire “A” and “B” to learn the price ofthat combination, and then indicate that they desire “A” and “C” tolearn the price of that combination, the process becomes tedious andrepetitive. Determining the price differential then requires the user toperform calculations, further complicating the process and making a saleless likely.

In another example, using a “shopping cart” paradigm, the potentialpurchaser might have a shopping cart that contains a number of products(typically displayed as a list of selected products). Typically, thelist of products will be just that—for example, a list of the products“A”, “B”, and “C”, with some stated price (e.g., “A” is $1, “B” is $2,and “C” is $3). Now if there is another product (or feature), “F”, thatis available, “F” might be available for only $0.20 more, rather thanthe full $1 usually charged for “F” alone. Knowing that “F” will beplaced in the shopping cart along with “A” implies that the delta inprice between “F”, and “F” with “A”, is only $0.20 (rather than $1). Thenet effect is that for only $0.20 more, the potential purchaser can add“A” to their purchase. Alternatively, if other products (or features)are to be added to the shopping cart (e.g., “F”, “G”, and “H”), theremay be a substantial reduction in price of the “A”/“B”/“C” combination(e.g., because “G” includes “C”, and so “C” is basically free at thatpoint). It is these incremental changes in price that need to becaptured and presented to the potential purchaser to motivate thepotential purchaser to make the more extensive purchase, by presentingthe product(s) as a whole (as opposed to a collection of items), from apricing perspective.

With regard to the automobile example, the potential purchaser ispresented with the price of the base model (e.g., $20,000). Thepotential purchaser desires the FM radio. The price of the automobile isnot now $20,600, but is instead $20,400. Thus, the sales entity is ableto tout that for only $400 more, the potential purchaser can purchasethe automobile with an FM radio. Moreover, a comparison to the fullprice of the FM radio can be made, and characterized as selling a $600FM radio for $400.

Moreover, delta pricing can be performed such that peripheral costs areincluded in the final price. As noted, peripheral costs includeshipping, handling, taxes, and the like. For example, in the purchase ofa toy using an e-commerce website, the shipping for a product might be acertain amount. The shipping for a second toy might be the same or onlyslightly more. This is attractive from a marketing perspective because,in such a scenario, the potential purchaser perceives they will bereceiving extra value without extra cost. In the preceding example, thepotential purchaser is presented with the impression that they arereceiving free shipping, as long as the final price presented reflectsthis.

Delta pricing can be used as a powerful marketing tool because deltapricing allows the purchaser to easily learn the incremental differencein price cause by adding (or removing) a given selection, when comparedto a base price. This is particularly important in an industry where abase configuration is mandatory. Such a marketing approach (and so,functionality) is particularly attractive, for example, in the examplegiven with regard to the purchase of an automobile which includes aradio as a mandatory feature. The use of delta pricing then becomes apowerful marketing tool because the delta in prices is typically goingto be less than the absolute price of the given feature. There istypically no case where the potential purchaser will have to pay thefull absolute value of a given feature. The use of delta pricing allowsthe seller to focus the potential purchaser's attention on theincremental difference in price, and to heighten the potentialpurchaser's awareness of the fact that they will not pay the absoluteprice of the feature, but only the incremental difference in price.

An application programming interface (API) that is capable of supportingdelta pricing according to embodiments of the present invention can bein the form of, for example, the following:

  deltaPricing(sessionObject, <pricing types/result/delta to return>,baseConfigurationObject, [[<items to add>, <items to delete>], [<itemsto add>, <items to delete>]] ...)where

sessionObject: This supports the pricing service “caching” describedherein. This is described as an object because it is beneficial to beable to pass multiple values (properties) on the object rather thanusing a single value (although that approach can be used as well).

<pricing types/result/delta to return>: This relates to what values areto be returned. In the examples herein, only the delta price isdiscussed, but any piece of the price calculation can be returned, if sodesired. For example, for an upsell, it is desirable to return the deltaprice and other values, to demonstrate the cost advantage provided bythe delta price.

baseConfigurationObject: This is used to relate the current (base)state, to which the other items will be added or deleted when pricing.

[<items to add>, <items to delete>], This is where the items for deltapricing are specified. In the previous example relating to the purchaseof a vehicle, one pairing of add/deletes would be <CD Player>, <StockRadio>, another would be <High-End Stereo System>, <Stock Radio>, andanother would be <Leather Seats, Luxury Package>, <none>. It isdesirable to be able to omit such parameters entirely or add apotentially infinite number of such items. It will be noted that if noadd/delete items are specified, the deltapricing( ) will typicallyfunction in a manner similar to a basic quote/price method.

There are several options with regard to the type of object(s) to beused to specify the base configuration and items for addition/deletion.The simplest solution is to specify a concatenation or collection ofpart numbers (strings). While simple, such a solution can limit thefunctionality made available to the programmer. Items may be priceddifferently in a configuration. For example, a standalone CD Player willtypically cost more than a pre-installed CD Player, and if the partnumbers are the same, another way is needed to indicate thatinformation. This is most commonly done with the use of a structure.Preferably, the structure is related with the parameter objects. Thiscan would allow greater backward compatibility with any preceding,simpler functionality. The quote object allows the specification of allthe header information (date, org, pricing sequence, and so on), whilethe line items allow the specification of quantities, part numbers, andstructure (though ID and parentIDs).

From a technical standpoint, as the number of features (or productcombinations or the like) increase, the amount of information that needsto be aggregated increases exponentially. For example, if a product hasfifty features and the potential purchaser is interested in fourconfigurations, each feature must be priced (50 operations) and thismust be done four times (for a total of 200 operations). The complexityof such situations now becomes clear, and the cost, even given themarketing value of such capabilities, can be an obstacle. A softwarearchitecture that allows delta pricing information to be generatedquickly and efficiently, as well as one that supports the implementationof the API described above, is now described.

An Example Software Architecture Supporting Efficient Delta Pricing

FIG. 1C is a block diagram illustrating an example of a softwarearchitecture 100 that includes various layers and modules which supportembodiments of the present invention. Software architecture 100 is madeup of a processing system 101 (e.g., a server (e.g., a website server)configured to support an e-commerce website), which is configured toprocess and present pricing information to a potential purchaser accessprocessing system 101 using, for example, a browser. In turn, processingsystem 101 includes an applications module 102, which in turn includes apricing module 103.

Processing system 101 includes a scripts layer 105 and a controls layer110, which together form a JSP layer 111, as well as applications module102. Applications module 102 includes a modules layer 115, a serviceslayer 120. Processing system 101 also includes a database layer 125.Scripts layer 105 includes a set of presentation scripts 130, which maybe implemented using a scripting language, for example. Similarly,controls layer 110 includes a set of presentation controls 135.Presentation controls 135 provide functionality that interoperates withpresentation scripts 130 to generate the user interface presented to acustomer accessing a website supported by software architecture 100. Thefunctionality provided by presentation controls 135 includes managementof HTML controls, lists, links and buttons that provide thefunctionality presented by such a website.

Typically, controls have no state, except for that which is needed forthe actual control itself (e.g., identity). Modules layer 115 includes acatalog module 140 and a pricing module 141 (which is also included aspart of pricing module 103), among other modules. Catalog module 140communicates with pricing module 141 to access pricing information viaservices layer 120. In general, modules are used for tasks such ascross-module communication and management of communications with thevarious services to which the given module belongs. Modules aregenerally stateless, with the user's state typically residing in JSPlayer 111. As its name implies, catalog module 140 provides therequisite catalog functionality, and, by communicating with otherelements described subsequently, allows a customer to obtain pricinginformation regarding one or more products having one or more selectedfeatures (i.e., one or more selected configurations). This can be, forexample, a single product, or a number of products (e.g., the productsdisplayed on a page of a catalog). Applications module 102 resides belowJSP layer 111 in processing system 101.

Services layer 120 includes a pricing service 145 and a quote processor150. Quote processor 150 is coupled to a pricing engine 151. Serviceslayer 120 acts as an interface between modules layer 115 and databaselayer 125, and provides functionality such as data persistence and datapreparation, allowing interaction with other functions within thearchitecture, such as remote resources. A services layer such asservices layer 120 also allows for the persistence of the respectiveinformation for each of the separate functionalities represented by eachservice therein, as well as control and management of the givenservice's data, as well as being able to perform at least some of themore intensive calculations. Typically, a service has no stateassociated therewith.

In supporting the functionality provided by catalog module 140 andpricing module 141, pricing module 103 (including pricing service 145,quote processor 150 and pricing engine 151) responds to requests forpricing information from pricing module 141 based on informationprovided by catalog module 140. Such information is provided from theone or more databases of database layer 125 (exemplified by a database160, which is also referred to herein as a product informationdatabase). Database layer 125 (via database 160) effects the actualstorage of the data employed by the various functions provided bysoftware architecture 100. In providing such support, database 160provides pricing service 145 and quote processor 150 with the datanecessary for these services to respond to requests from pricing module141 (and catalog module 140).

For example, pricing module 141 can provide pricing service 145 with arequest for price(s) 165 to begin the process of generating therequisite pricing information for display to the customer (e.g., aquote, or in software architecture 100, a super-quote). Pricing service145 then instantiates quote processor 150 (typically, in response torequest for price(s) 165). A gather data call (an indication thatpricing engine 151 is to gather data from database layer 125) is thenmade to pricing engine 151 (depicted in FIG. 1C as a gather data call170) to indicate to pricing module 151 that pricing data (which, forexample, can be in the form of a final price or a pricing delta) is tobe requested from database 160. Pricing engine 151 then queries database160 by sending a data request 175 to database 160, in order to identifya set of data that satisfies the pricing requested. Database 160responds to data request 175 by providing requested pricing data 180.This process of requesting data from database 160 and database providingsuch data is more generically referred to herein as accessing database160.

It will be noted that, in a preferred embodiment, once quote processor150 is instantiated by pricing service 145, quote processor 150 is alsopassed to pricing engine 151, in addition to gather data call 170. Inthis scenario, quote processor 150 is essentially a “plug-in” that isexecuted within the context of pricing service 145. It will also benoted that, in a preferred embodiment, two calls are actually made topricing engine 151. Pricing service 145 passes quote processor 150 topricing engine 151, then makes the two calls to pricing engine 151. Inthe first call, quote processor 150 is passed as part of gather datacall 170, which causes the caching of data (e.g., in pricing engine151). A second call, a pricing data call 182, actually prices the quoteand so returns the price(s) of item(s) in the quote.

In traditional approaches, only a data call (somewhat similar to pricingdata call 182) is supported, allowing only single data requests to bemade. In embodiments of the present invention, however, the use ofgather data call 170 allows all the data required to satisfy all thequotes contained in the given super-quote in one operation, and sopermits pricing engine 151 to load the requisite data from database 160only once.

In a more general sense, each layer of a computer architecture,peripheral storage (e.g., a hard disk) is approximately an order ofmagnitude slower than the computer's memory. Memory, in turn, is stillapproximately an order of magnitude slower than off-chip cache, andoff-chip cache is approximately an order of magnitude slower thanon-chip cache. Thus, there is roughly an order of magnitude at each oneof those layers. This is also true outside a single-computerarchitecture. If the processing is contained within the one computer(e.g., entirely at the web browser), that scenario is going to beapproximately an order of magnitude faster than making a call into theapplications server. Operations that involve only an applications serverare going to be approximately an order of magnitude faster thanoperations that involve accessing a database. Thus, subsequent pricingdata calls (e.g., pricing data call 182), which do not require theperformance of database accesses, are processed significantly faster,and so make delta pricing a practical reality.

Once pricing engine 151 receives requested pricing data 180, pricingengine 151 uses this information to generate pricing data 185. A pricingdata call 182 is made to pricing engine 151. In response, pricing engine151 passes pricing data 185 to quote processor 150 (and so pricingservice 145). Pricing service 145 then passes this information topricing module 141 as a quote 190. It will be noted that this and otherrequests discussed herein are in response to customer actions presentedvia scripts layer 105 (e.g., presentation scripts 130) and controlslayer 110 (e.g., presentation controls 135). It will also be noted that,in some embodiments, the quote object (representing the quote) isactually passed between elements of software architecture 100 duringgather data call 170, pricing data call 182, the return of pricing data195, and the return of quote 190, as previously noted.

Using a super-quote, quote processor 150 is able to include the requestsnecessary for multiple quotes in gather data call 170. Once pricingengine 151 queries database 160, the pricing data retrieved fromdatabase 160 (i.e., requested pricing data 180) includes the pricingdata necessary to satisfy the multiple quotes included in thesuper-quote. The pricing data in requested pricing data 180 ismaintained in quote processor 150. Thus, once a super-quote has beenprocessed, the pricing data maintained in pricing engine 151 allowsquote processor 150 to generate pricing data for the multiple quotes bysimply calling the pricing engine with various of the items in thesuper-quote marked as inactive (or active) (i.e., using multiple pricingdata calls (e.g., pricing data call 182)).

Thus, in the situation where a product has a number of features,variations of the basic product (having varying feature sets) can bepriced by marking the desired features (in allowable combinations,possibly) as active, while marking other features inactive. In thecatalog scenario, a single page of pricing data might be retrieved, andso the items on that page would be marked active. Alternatively, pricingdata for several pages might be retrieved (e.g., the preceding andfollowing catalog pages, as well as the current catalog page), allowingquick presentation of pricing data as a customer paged through acatalog. It will be noted that the pricing rules (actually,configuration rules), are typically implemented in XML, and are used bythe configuration engine, which executes in modules layer 115. Thepricing rules can be, for example, of the form “if the car includesleather upholstery, the price for the premium stereo is $[price].”

FIG. 2 is a flow diagram illustrating the actions performed in scriptslayer 105 and controls layer 110 in generating a price quote usingsoftware architecture 100. The process begins with the customer'sinputting information, using scripts layer 105 and controls layer 110,that will allow catalog module 140 to identify one or more items to bepriced (step 200). It will be noted that the use of catalog module 140is merely exemplary, as any one of a number of module types couldemploy, and be employed in, a software architecture such as thatdescribed herein. This may consist of, for example, a customeridentifying a base configuration of a product (from which various otherpossible configurations may be generated) or a request for one or moreitems from a catalog (e.g., a page of a catalog). Using the latterscenario as an example, controls layer 110 initiates a get catalogmodule operation (step 205) and a get pricing module operation (step210). Next, the items are priced, which entails one or more calls fromcontrols layer 110 through modules layer 115 to services layer 120 (step220). Once the requisite prices are thus generated, the pricing data ispresented to the customer (e.g., using JSP) (step 230). It will be notedthat the use of JSP information in presenting the pricing information tothe customer is merely an example of one way in which the pricing datacan be displayed. It will also be noted that, in certain embodiments(such as that shown), catalog module 140 employs pricing module 141 toprice the items.

As noted, FIG. 2 depicts a flow diagram illustrating the process ofgenerating a price quote according to one embodiment of the presentinvention. It is appreciated that operations discussed herein mayconsist of directly entered commands by a computer system user or bysteps executed by application specific hardware modules, but thepreferred embodiment includes steps executed by software modules. Thefunctionality of steps referred to herein may correspond to thefunctionality of modules or portions of modules.

The operations referred to herein may be modules or portions of modules(e.g., software, firmware or hardware modules). For example, althoughthe described embodiment includes software modules and/or includesmanually entered user commands, the various example modules may beapplication specific hardware modules. The software modules discussedherein may include script, batch or other executable files, orcombinations and/or portions of such files. The software modules mayinclude a computer program or subroutines thereof encoded oncomputer-readable media.

Additionally, those skilled in the art will recognize that theboundaries between modules are merely illustrative and alternativeembodiments may merge modules or impose an alternative decomposition offunctionality of modules. For example, the modules discussed herein maybe decomposed into submodules to be executed as multiple computerprocesses, and, optionally, on multiple computers. Moreover, alternativeembodiments may combine multiple instances of a particular module orsubmodule. Furthermore, those skilled in the art will recognize that theoperations described in example embodiment are for illustration only.Operations may be combined or the functionality of the operations may bedistributed in additional operations in accordance with the invention.

Alternatively, such actions may be embodied in the structure ofcircuitry that implements such functionality, such as the micro-code ofa complex instruction set computer (CISC), firmware programmed intoprogrammable or erasable/programmable devices, the configuration of afield-programmable gate array (FPGA), the design of a gate array orfull-custom application-specific integrated circuit (ASIC), or the like.

Each of the blocks of FIG. 2, as with other of the processes describedherein, may be executed by a module (e.g., a software module) or aportion of a module or a computer system user using, for example, acomputer system such as the storage router previously mentioned, or asimilar network element, as well as a computer system such as thatdescribed subsequently herein. Thus, the above described method, theoperations thereof and modules therefor may be executed on a computersystem configured to execute the operations of the method and/or may beexecuted from computer-readable media. The method may be embodied in amachine-readable and/or computer-readable medium for configuring acomputer system to execute the method. Thus, the software modules may bestored within and/or transmitted to a computer system memory toconfigure the computer system to perform the functions of the module.

Such a computer system normally processes information according to aprogram (a list of internally stored instructions such as a particularapplication program and/or an operating system) and produces resultantoutput information via I/O devices. A computer process typicallyincludes an executing (running) program or portion of a program, currentprogram values and state information, and the resources used by theoperating system to manage the execution of the process. A parentprocess may spawn other, child processes to help perform the overallfunctionality of the parent process. Because the parent processspecifically spawns the child processes to perform a portion of theoverall functionality of the parent process, the functions performed bychild processes (and grandchild processes, etc.) may sometimes bedescribed as being performed by the parent process.

Such a computer system typically includes multiple computer processesexecuting “concurrently.” Often, a computer system includes a singleprocessing unit which is capable of supporting many active processesalternately. Although multiple processes may appear to be executingconcurrently, at any given point in time only one process is actuallyexecuted by the single processing unit. By rapidly changing the processexecuting, a computer system gives the appearance of concurrent processexecution. The ability of a computer system to multiplex the computersystem's resources among multiple processes in various stages ofexecution is called multitasking. Systems with multiple processingunits, which by definition can support true concurrent processing, arecalled multiprocessing systems. Active processes are often referred toas executing concurrently when such processes are executed in amultitasking and/or a multiprocessing environment.

The software modules described herein may be received by such a computersystem, for example, from computer readable media. The computer readablemedia may be permanently, removably or remotely coupled to the computersystem. The computer readable media may non-exclusively include, forexample, any number of the following: magnetic storage media includingdisk and tape storage media. optical storage media such as compact diskmedia (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media.nonvolatile memory storage memory including semiconductor-based memoryunits such as FLASH memory, EEPROM, EPROM, ROM or application specificintegrated circuits. volatile storage media including registers, buffersor caches, main memory, RAM, etc. and data transmission media includingcomputer network, point-to-point telecommunication, and carrier wavetransmission media. In a UNIX-based embodiment, the software modules maybe embodied in a file which may be a device, a terminal, a local orremote file, a socket, a network connection, a signal, or otherexpedient of communication or state change. Other new and various typesof computer-readable media may be used to store and/or transmit thesoftware modules discussed herein.

FIG. 3 is a flow diagram illustrating the actions performed by pricingmodule 141 (in communication with catalog module 140, and, e.g., withinmodules layer 115) in response to a request to price one or more items(which appears in FIG. 2 as step 220). The process begins with theinstantiation of a quote processor within services layer 120 (step 300).Next, a super-quote is built by pricing module 141 for servicing byservices residing in services layer 120 (e.g., quote processor 150 andpricing service 145) (step 310). The super-quote contains sufficientinformation to permit the generation of a number of quotes. Thus, forexample, the super-quote may contain all the information required topresent the customer with pricing information for all the products onthe page of a catalog. Pricing module 141 then calls pricing service 145by sending request for price(s) 165 (containing, for example, asuper-quote and an identifier identifying the instance of quoteprocessor 150 to be employed) to pricing service 145 (step 320). Theidentifier can be used, for example, to identify which one of a numberof quote processors to which the super-quote is to be sent. Thus, eachquote processor can have its own definition of the bits in a given datastructure (e.g., bit vector (described subsequently)). This allows thesame infrastructure to be used to process a variety of super-quotes,simply by enlisting the services of the quote processor configured toprocess the given super-quote. Pricing service 145 responds to catalogmodule 140 with quote 190 that contains the pricing data requested.Pricing module 141 receives the results for presentation to the customervia JSP layer 111.

FIG. 4 is a flow diagram illustrating the actions performed withinservices layer 120 by pricing service 145 in response to being called bypricing module 141 (which appears in FIG. 3 as step 320, a call topricing service 145). The process begins with the deserialization ofrequest for price(s) 165, which contains, for example, a super-quote andan identifier identifying a quote processor to be employed (e.g., quoteprocessor 150) (step 400). Next, pricing service 145 calls quoteprocessor 150 (step 410). Pricing service 145 passes pricing data 185 toquote processor 150 to enable quote processor 150 to gather therequisite data and thus provide the requisite pricing. Once pricingservice 145 receives pricing data 185 from quote processor 150, theresults are converted to a list of one or more prices (step 415). Itwill be noted that the use of a list is only a specific example—theprice(s) thus retrieved can be returned in any appropriate or desirableformat. Typically, a catalog will employ price lists, for example.Pricing service 145 then returns the requested information (e.g., quote190) to pricing module 141 (step 420). It will be noted that, inreturning the requested information, the results are packaged andserialized in a process that is essentially the mirror image of thatjust noted.

FIG. 5A is a flow diagram illustrating the actions performed by quoteprocessor 150 in gathering pricing data and pricing one or more items inresponse to a request from pricing service 145. The process begins withquote processor gathering data by calling pricing engine 151 (step 500).This call is depicted as gather data call 170 in FIG. 1. This callcauses pricing engine 151 to access database 160. Once the requisitepricing data has been gathered, quote processor 150 proceeds withpricing the one or more configurations to be priced (e.g., via a pricingdata call such as pricing data call 182). This method of accessingdatabase 160 (multiple accesses generated in response to onesuper-quote) allows the pricing of multiple products, multipleconfigurations of a single product and other such multiple pricingscenarios, in response to a single super-quote. The aforementionedadvantages are thus provided, including fewer database accesses andfaster response times. Quote processor 150 first prices a configuration(step 510), then determines whether all configurations requiring pricinghave been thus priced (step 520). Once this iterative portion of theprocess completes, the results of these operations are packaged forprovision to pricing service 145 as pricing data 185, and so, on topricing module 141 as quote 190 (step 530). It will be noted thatpricing data 185 can be a specific price (e.g., the price of the givenconfiguration) or a pricing delta (e.g., the difference in price betveena base configuration and another configuration).

FIG. 5B is a diagram illustrating an example of a data structure thatcan be used to implement portions of a super-quote. The data structuredepicted in FIG. 5B is a set of bit vectors (bit vectors 550). Bitvectors 550 include a number of bits (bits 560(1,1)-(N,N)) that indicatewhether a given configuration of a given product includes one or more ofthe features available for that product. For example, a column in bitvectors 550 (e.g., bits 560(1,2)-(N−2)) can be used to represent thepresence or absence of a given feature in the product configurationcorresponding to each row of bit vectors 550. This might be the casewhere a customer requests the base configuration of a given product(e.g., represented by the first row of bit vectors 550, bits560(1,1)-(1,N)), and the most popular (most likely to be requested)configurations are also retrieved. In that case, the presence or absenceof the relevant features would be indicated by bits 560(1,1)-(N,N).Thus, when pricing service 145 requests further pricing data (or otherdata) (e.g., on other configurations of the product reflected in bitvectors 550), quote processor 150 is able to respond without database160 having to be queried.

In fact, the use of a super-quote also allows a customer to pricemultiple configurations simultaneously. For example, in the case where auser desires to compare a number of configurations of a given vehicle, asuper-quote that retrieves pricing data for each such configurations canbe constructed. In that case, bit vector 550 contains values thatreflect the various configurations to be priced.

Alternatively, a catalog page might be requested. In that scenario, eachcolumn of bit vectors 550 represents a corresponding product on thegiven catalog page. Thus, each row of bit vector 550 contains a singleaffirmative value (e.g., a one), for the given product representedthereby. Bit vector 550 thus might contain a diagonal filled withaffirmative values, with the rest of the values being negative (e.g.,zeroes). To generate the prices (or other information) needed for acatalog page, pricing service 145 simply requests the necessaryinformation for each product on the catalog page, to which quoteprocessor 150 responds with data for each product, again without resortto database 160.

Thus, a super-quote achieves at least two objectives. First, thesuper-quote allows data for multiple quotes to be gathered using feweraccesses than would typically be used in gathering such information.Second, the use of a super-quote in a software architecture according toembodiments of the present invention decouples the quote (orsuper-quote) from the processing of that quote. Pre-processing andpost-processing of a quote can be performed at any time, once theinformation (e.g., pricing data) has been retrieved. This is due, inpart, to the persisting of data in memory—post-processing can occur atany time, once the data has been persisted. This persistence can beeffected by caching the information in memory, for example. Moreover,the use of a bit vector such as bit vector 550 (or similar datastructure) allows for the efficient representation of such information.

FIG. 6 is a flow diagram illustrating the actions performed by pricingengine 151 in accessing database 160. The process consists of pricingengine 151 gathering data from database 160 by sending data request 175and receiving requested pricing data 180 in response (step 600). It isthis operation that the present invention minimizes through the use of asuper-quote, by making a request that includes multiple queries. Byincluding a request for the data necessary to satisfy all such queriesin the given super-quote, software architecture 100 avoids the need tomake such queries separately, and so the overhead associated with suchmultiple queries.

An Example Computing and Network Environment

FIG. 7 depicts a block diagram of a general-purpose computer 700suitable for implementing embodiments of the present invention, forexample, clients and/or servers in a client/server architecture.General-purpose computer 700 is typically a data processing systemdesigned to provide computing power to one or more users, either locallyor remotely. Input user device(s) 710, such as a keyboard and/or mouse,as well as other input/output (I/O) devices 715 (via I/O interface (I/F)716) are coupled to a bi-directional system bus 720. The input userdevice(s) 710 permit user input to the computer system and communicatingthat user input to processor 730. General-purpose computer 700 alsoincludes a video memory 735, a main memory 740 and a mass storage unit750, all coupled to bi-directional system bus 720 along with input userdevice(s) 710 and processor 730. Mass storage unit 750 may include bothfixed and removable media, such as floppy disk(s), hard disk(s), tapedrive(s), CD-ROM drive(s), CD-RW drive(s) and the like. Bus 720 maycontain, for example, 732 address lines for addressing video memory 735,main memory 740, controllers for mass storage unit 750 and the like.System bus 720 also includes, for example, a 82-bit data bus fortransferring data between and among the components, such as mass storageunit 750, processor 730, video memory 735 and main memory 740.Alternatively, multiplex data/address lines may be used instead ofseparate data and address lines.

Computer programs and data are generally stored as instructions and datain mass storage unit 750 until loaded into main memory 740 forexecution. Computer programs may also be in the form of electronicsignals modulated in accordance with the computer program and datacommunication technology when transferred via a network. The method andfunctions relating to the present invention may be implemented in acomputer program alone or in conjunction with combinations of hardwareand software. Furthermore, context subsystem data structures can beimplemented in and utilized by general-purpose computer 700, or by otherdata processing systems that have access to the data structures.

In an embodiment of this invention, processor 730 is a 82-bitmicroprocessor manufactured by Motorola (e.g., an 680X0 microprocessor)or by Intel (e.g., an 80X86 or Pentium microprocessor). However, anyother suitable microprocessor or microcontroller may be utilized. Mainmemory 740 is preferably comprised of dynamic random access memory(DRAM). Video memory 735 is preferably a dual-ported video random accessmemory. One port of the video memory 735 is coupled to video amplifier755. The video amplifier 755 is used to drive the display 760. Videoamplifier 755 is well known in the art and may be implemented by anysuitable means. This circuitry converts pixel data stored in videomemory 735 to a raster signal suitable for use by display 760. Display760 is a type of monitor suitable for displaying graphical images.

The computer system described above is depicted for purposes of exampleonly. The present invention may be implemented in any type of computersystem or programming or processing environment. It is contemplated thatthe present invention might be run on a stand-alone computer system,such as the one described above. The present invention might also be runfrom a server system that can be accessed by a plurality of clientcomputer systems interconnected over an intranet network. Finally, thepresent invention may be run from a server that is accessible to clientsover a wide-area network (WAN) such as the Internet, as is describedwith regard to FIG. 8.

Many other devices or subsystems (not shown) may be connected in asimilar manner (e.g., bar code readers, document scanners, digitalcameras and so on). Conversely, it is not necessary for all of thedevices shown in FIG. 7 to be present to practice the present invention.The devices and subsystems may be interconnected in different ways fromthat shown in FIG. 7. The operation of a computer system such as thatshown in FIG. 7 is readily known in the art and is not discussed indetail in this application.

FIG. 8 is a block diagram depicting a network 800 in whichgeneral-purpose computer 700 is coupled to an internetwork 805, which iscoupled, in turn, to client systems 810 and 820, as well as servers 830and 835. Internetwork 805 (e.g., the Internet) is also capable ofcoupling client systems 810 and 820, and servers 830 and 835 to oneanother. With reference to general-purpose computer 700, modem 747,network interface 748 or some other method can be used to provideconnectivity from general-purpose computer 700 to internetwork 805.General-purpose computer 700, client system 810 and client system 820are able to access information on one or both of servers 830 and 835using, for example, a web browser (not shown). Such a web browser allowsgeneral-purpose computer 700, as well as client systems 810 and 820, toaccess data on servers 830 and 835 representing the pages of a websitehosted by a respective one of servers 830 and 835. Protocols forexchanging data via the Internet are well known to those skilled in theart. Although FIG. 8 depicts the use of the Internet for exchangingdata, the present invention is not limited to the Internet or anyparticular network-based environment.

Referring to FIGS. 7 and 8, a browser running on a computer system(e.g., computer system 700) can employ a TCP/IP connection to pass arequest to a server (e.g., server 830), which can run an HTTP “service”(e.g., under the WINDOWS® operating system; also referred to herein asan HTTP server) or a “daemon” (e.g., under the UNIX® operating system),for example. Such a request can be processed by contacting such an HTTPserver using a protocol that can be used to communicate between thecomputer and the server (i.e., HTTP). The HTTP server then responds tothe protocol, typically by sending a “web page” formatted as an HTMLfile. The browser interprets the HTML file and may form a visualrepresentation of the same using local resources (e.g., fonts andcolors).

Referring again to FIGS. 7 and 8, server 830 (which includes an HTTPserver, as previously noted) can further include a web server (notshown), an application server (also not shown) and a database serveroperating with an open distributed object computing infrastructure suchas Common Object Request Broker Architecture (CORBA) (also not shown).The web server can include a user interface layer and a centralizeddispatch mechanism, both of which can be implemented employing JavaServer Pages (JSP), for example.

One advantage of employing JSP is that the use of JSP facilitatesorganization of a website as a state machine. In this manner, thelogical organization of a website can be arranged in categories, forexample. Controls, States and Transitions. Controls include a Java classof elements that manage the active elements of a page such as rendercontrol text or interpret user's action with respect to a page. Examplesof controls would be the management of a virtual button on a web page orlogin management that could include providing a number of dialog boxescontaining text and a virtual button. States define a user's currentlocation on the website (e.g., in a state machine), such as the web pagethat a user is presently viewing. States also define the relationship ofa user with respect to a web page being viewed. Transitions define thenew state of a user and are a function of a users interaction with apage. Specifically, a transition is defined by the user's current stateand the actions taken by the user while in that state (e.g., the resultof user operation on a control alters the user's state). Simply put, theuser's new state is simply defined as the user's current state, asmodified by the transition selected. The transitions are located in atransition module that is responsible for all transitions.

Advantages of the state machine model of the website are that it is hasmaintainability to facilitate update flow or pages very easily and peruser state machine. service different users with maximum code reuse. Itis also consistent in that most or all server logic is handled under thesame paradigm. Login control, record and display controls causetransitions which update state. Typically, XML/XSL defines the statemachine, page content and layout. Such a methodology can also becompatible with the Wireless Application Protocol (WAP). This can extendan existing web site to provide alternative state machines for WAPusers.

While particular embodiments of the present invention have been shownand described, it will be obvious to those skilled in the art that,based upon the teachings herein, changes and modifications may be madewithout departing from this invention and its broader aspects and,therefore, the appended claims are to encompass within their scope allsuch changes and modifications as are within the true spirit and scopeof this invention. Furthermore, it is to be understood that theinvention is solely defined by the appended claims.

What is claimed is:
 1. A method of utilizing a super-quote datastructure to reduce database accesses, reducing time spent accessing adatabase in computer processing operations, and increasing a speed ofthe computer processing operations, the method comprising: executing aprogram by a computer system that transforms the computer system into amachine to perform: receiving data representing at least a modificationof one or more features of a first configuration of a product;generating a super-quote utilizing the super-quote data structure toretrieve sufficient information from the database to generate multiplequotes for multiple configurations of the product, wherein thesuper-quote data structure permits consolidation of data representingmultiple quotes; instantiating a quote processor by a service layer toexecute within a context of a pricing service to process the super-quoteand for further: accessing the database using a query for thesuper-quote to reduce accesses to the database, reduce time spentaccessing the database in the computer processing operations, andincrease the speed of the computer processing operations relative toqueries utilizing non-super-quote data structures; processing the datarepresenting the modification of the one or more features of the firstconfiguration to generate in the computer system a first delta price fora second configuration of the product, wherein the second configurationis the first configuration as modified as a result of the receivedmodification, the modification of the one or more features of the firstconfiguration results in a price change between a price of the firstconfiguration and a price of the second configuration of the product,and the first delta price represents a price difference between theprice of the first configuration and the price of the secondconfiguration of the product; processing information including theinformation in the super-quote to generate a price of the secondconfiguration using the first delta price and the price of the firstconfiguration; and providing data representing the first delta price ofthe product to a computer system of a user to indicate to the user apricing impact associated with the modification of the one or morefeatures of the first configuration of the product.
 2. The method ofclaim 1 wherein the price of the first configuration prior to themodification of one or more features of the first configurationrepresents a base price of the first configuration, the method furthercomprising generating a final price of the second configuration usingthe base price and the first delta price.
 3. The method of claim 2wherein generating the final price of the second configuration comprisesadjusting the base price by the delta price.
 4. The method of claim 2further comprising: receiving a selection of an additional feature,wherein: the modification of the one or more features of the firstconfiguration comprises adding an additional feature to the firstconfiguration; the final price is associated with the product; and asecond delta price is generated in response to the selection of theadditional feature for the product.
 5. The method of claim 2 furthercomprising: receiving a selection removing a feature from the firstconfiguration, wherein: the modification of the one or more features ofthe first configuration comprises removing the feature from the firstconfiguration; the final price is associated with the product; and thefinal price is generated in response to the selection removing thefeature from the first configuration.
 6. The method of claim 2 whereinthe computer system of the user is a client computer system; the firstdelta price is generated by a server computer system, the first deltaprice is generated in response to the modification of one or more offeatures of the first configuration of the product at the clientcomputer system, and the client computer system is communicativelycoupled to the server computer system.
 7. The method of claim 6 furthercomprising: providing the final price to the client computer system fordisplay by the client computer system.
 8. The method of claim 2 wherein:the base price is generated in response to a selection of the firstconfiguration of the product, and the first delta price is generated inresponse to at least one member of a group consisting of: addition ofone or more features to the first configuration, removal of one or morefeatures of the first configuration, and substitution of one or morefeatures of the first configuration with one or more additional featuresof the first configuration.
 9. The method of claim 1 wherein: theproduct is selected from a group consisting of: one or more services,one or more goods, and one or more goods and services.
 10. The method ofclaim 1 further comprising: receiving at least a modification of one ormore features of the second configuration of the product; generating asecond delta price for a third configuration of the product afterreceiving the modification of the one or more features in the secondconfiguration, wherein the third configuration is the secondconfiguration as modified by the received modification of the one ormore features of the second configuration, the modification of the oneor more features of the second configuration results in a price changebetween the second configuration and the third configuration of theproduct, and the second delta price comprises a price difference betweena price of the second and a price of the third configurations of theproduct; generating a price of the third configuration using seconddelta price and the price of the second configuration; and providing theprice of the third configuration and the second delta price to thecomputer system of the user to indicate to the user a pricing impactassociated with the modification of the one or more features of thesecond configuration of the product.
 11. The method of claim 10 wherein:the computer system of the user is a client computer system; the firstdelta price and the second delta price are generated by a servercomputer system; the first delta price is generated in response to afirst selection of a first feature at the client computer system; thesecond delta price is generated in response to a second selection of asecond feature at the client computer system; and the client computersystem is communicatively coupled to the server computer system.
 12. Themethod of claim 11 further comprising: generating a final price of thethird configuration using a base price of the first configuration andthe second delta price; and providing the final price to the clientcomputer system for display by the client computer system to allowcomparison between the final price and the price of the secondconfiguration.
 13. The method of claim 8 wherein modification of the oneor more features of the first configuration further comprises addingmultiple features to the first configuration.
 14. The method of claim 8wherein modification of the second configuration further comprises atleast one member of a group consisting of: adding multiple features tothe second configuration and removing at least one of the features ofthe second configuration.
 15. The method of claim 1 wherein themodification of the one or more features of the first configurationcomprises at least one member of a group consisting of: addition of oneor more features to the first configuration, removal of one or morefeatures of the first configuration, and substitution of one or morefeatures of the first configuration with one or more additional featuresof the first configuration.
 16. The method of claim 1 wherein a uniquefeature is a feature not common to both the first and secondconfigurations of the product, each unique feature has an individualprice, and the price difference does not equal an aggregate of eachindividual price for each unique feature.
 17. A method of utilizing asuper-quote data structure to reduce database accesses, reducing timespent accessing a database in computer processing operations, andincreasing a speed of the computer processing operations, the methodcomprising: executing a program by a computer system that transforms thecomputer system into a machine to perform: sending data representing atleast a modification of one or more features of a first configuration ofa product; and receiving a first delta price of the product from asecond computer system to indicate a pricing impact associated with themodification of the one or more features of the first configuration ofthe product, wherein: the second computer system generates a super-quoteto retrieve sufficient information from a memory to generate multiplequotes for multiple configurations of the product, wherein utilizing thesuper-quote data structure to retrieve sufficient information from thedatabase to generate multiple quotes for multiple configurations of theproduct, and the super-quote data structure permits consolidation ofdata representing multiple quotes; the second computer instantiates aquote processor by a service layer to execute within a context of apricing service to process the super-quote and for further: accessingthe database using a query for the super-quote to reduce accesses to thedatabase, reduce time spent accessing the database in the computerprocessing operations, and increase the speed of the computer processingoperations relative to queries utilizing non-super-quote datastructures; generating a second configuration of the product as modifiedby the data representing at least the modification of one or morefeatures of a first configuration of a product; processing informationincluding the information in the super-quote to generate the first deltaprice is generated for the second configuration after sending the one ormore features of the first configuration; providing data representingthe first delta price of the product to the first computer systemindicate to a user of the first computer system a pricing impactassociated with the modification of the one or more features of thefirst configuration of the product; wherein: the modification of the oneor more features of the first configuration results in a price changebetween a price of the first configuration and a price of the secondconfiguration of the product; the first delta price represents a pricedifference between the price of the first configuration and the price ofthe second configuration of the product; and the price of the secondconfiguration is generated using the first delta price and the price ofthe first configuration.
 18. The method of claim 17 wherein the price ofthe first configuration prior to the modification of one or morefeatures of the first configuration represents a base price of the firstconfiguration, the method further comprising receiving a final price ofthe second configuration that is generated using the base price and thefirst delta price.
 19. The method of claim 18 wherein the final price ofthe second configuration is adjusted the base price by the delta price.20. The method of claim 18 further comprising: sending a selection of anadditional feature, wherein: the modification of the one or morefeatures of the first configuration comprises adding an additionalfeature to the first configuration; the final price is associated withthe product; and a second delta price is generated in response to theselection of the additional feature for the product.
 21. The method ofclaim 18 further comprising: sending a selection removing a feature fromthe first configuration, wherein: the modification of the one or morefeatures of the first configuration comprises removing the feature fromthe first configuration; the final price is associated with the product;and the final price is generated in response to the selection removingthe feature from the first configuration.
 22. The method of claim 18wherein the at least a modification of one or more features of a firstconfiguration of a product is sent by a client computer system; thefirst delta price is generated by a server computer system, the firstdelta price is generated in response to the modification of one or moreof features of the first configuration of the product at the clientcomputer system, and the client computer system is communicativelycoupled to the server computer system.
 23. The method of claim 22further comprising: receiving the final price from the server computersystem for display by the client computer system.
 24. The method ofclaim 18 wherein: the base price is generated in response to a selectionof the first configuration of the product, and the first delta price isgenerated in response to at least one member of a group consisting of:addition of one or more features to the first configuration, removal ofone or more features of the first configuration, and substitution of oneor more features of the first configuration with one or more additionalfeatures of the first configuration.
 25. The method of claim 17 wherein:the product is selected from a group consisting of: one or moreservices, one or more goods, and one or more goods and services.
 26. Themethod of claim 17 further comprising: sending at least a modificationof one or more features of the second configuration of the product; andreceiving a price of the third configuration and the second delta priceto indicate a pricing impact associated with the modification of the oneor more features of the second configuration of the product, wherein: asecond delta price for a third configuration is generated afterreceiving the modification of the one or more features in the secondconfiguration; the third configuration is the second configuration asmodified by the received modification of the one or more features of thesecond configuration; the modification of the one or more features ofthe second configuration results in a price change between the secondconfiguration and the third configuration of the product; the seconddelta price comprises a price difference between the prices of thesecond and third configurations of the product; and a price of the thirdconfiguration is generated using the second delta price and the price ofthe second configuration.
 27. The method of claim 26 wherein: thecomputer system of the user is a client computer system; the first deltaprice and the second delta price are generated by a server computersystem; the first delta price is generated in response to a firstselection of a first feature at the client computer system; the seconddelta price is generated in response to a second selection of a secondfeature at the client computer system; and the client computer system iscommunicatively coupled to the server computer system.
 28. The method ofclaim 27 further comprising: generating a final price of the thirdconfiguration using a base price of the first configuration and thesecond delta price; and providing the final price to the client computersystem for display by the client computer system to allow comparisonbetween the final price and the price of the second configuration. 29.The method of claim 24 wherein modification of the one or more featuresof the first configuration further comprises adding multiple features tothe first configuration.
 30. The method of claim 24 wherein modificationof the second configuration further comprises at least one member of agroup consisting of: adding multiple features to the secondconfiguration and removing at least one of the features of the secondconfiguration.
 31. The method of claim 17 wherein the modification ofthe one or more features of the first configuration comprises at leastone member of a group consisting of: addition of one or more features tothe first configuration, removal of one or more features of the firstconfiguration, and substitution of one or more features of the firstconfiguration with one or more additional features of the firstconfiguration.
 32. The method of claim 17 wherein a unique feature is afeature not common to both the first and second configurations of theproduct, each unique feature has an individual price, and the pricedifference does not equal an aggregate of each individual price for eachunique feature.
 33. The method of claim 1 further comprising: providingthe first delta price and the price of the second configuration of theproduct to a computer system of the user to indicate to the user apricing impact associated with the modification of the one or morefeatures of the first configuration of the product.
 34. The method ofclaim 17 further comprising: receiving the first delta price and a priceof the second configuration of the product to indicate a pricing impactassociated with the modification of the one or more features of thefirst configuration of the product.
 35. A method of utilizing asuper-quote data structure to reduce database accesses, reducing timespent accessing a database in computer processing operations, andincreasing a speed of the computer processing operations, the methodcomprising: executing a program by a computer system that transforms thecomputer system into a machine to perform: receiving with an electronicinput/output device at least a modification of one or more features of afirst configuration of a product; generating a super-quote utilizing thesuper-quote data structure to retrieve sufficient information from thedatabase to generate multiple quotes for multiple configurations of theproduct, wherein the super-quote data structure permits consolidation ofdata representing multiple quotes; instantiating a quote processor by aservice layer to execute within a context of a pricing service toprocess the super-quote and for further: accessing the database using aquery for the super-quote to reduce accesses to the database, reducetime spent accessing the database in the computer processing operations,and increase the speed of the computer processing operations relative toqueries utilizing non-super-quote data structures; receiving electronicsignals from a memory to cause electrical circuits to generate a firstdelta price after receiving the modification of the one or more featuresof the first configuration, wherein a second configuration is the firstconfiguration as modified as a result of the received modification, themodification of the one or more features of the first configurationresults in a price change between a price of the first configuration anda price of the second configuration of the product, and the first deltaprice represents a price difference between the price of the firstconfiguration and the price of the second configuration of the product;receiving electronic signals from the memory to cause the electricalcircuits to generate a price of the second configuration using the firstdelta price and the price of the first configuration; and receivingelectronic signals from the memory to cause the electrical circuits toprovide the first delta price of the product to a computer system of auser to indicate to the user a pricing impact associated with themodification of the one or more features of the first configuration ofthe product.
 36. The method of claim 35 further comprising: receivingelectronic signals from the memory to cause the electrical circuits toprovide the first delta price and the price of the second configurationof the product to a computer system of a user to indicate to the user apricing impact associated with the modification of the one or morefeatures of the first configuration of the product.
 37. The method ofclaim 35 wherein the electrical circuits are included in amicroprocessor.
 38. The method of claim 35 wherein the price of thefirst configuration prior to the modification of one or more features ofthe first configuration represents a base price of the firstconfiguration, the method further comprising receiving electronicsignals from the memory to cause the electrical circuits to generate afinal price of the second configuration using the base price and thefirst delta price.
 39. The method of claim 38 wherein to generate thefinal price of the second configuration comprises adjusting the baseprice by the delta price.
 40. The method of claim 38 further comprising:receiving with the electronic input/output device a selection of anadditional feature, wherein: the modification of the one or morefeatures of the first configuration comprises adding an additionalfeature to the first configuration; the final price is associated withthe product; and a second delta price is generated by the electricalcircuits in response to the selection of the additional feature for theproduct.
 41. The method of claim 38 further comprising: receiving withthe electronic input/output device a selection removing a feature fromthe first configuration, wherein: the modification of the one or morefeatures of the first configuration comprises removing the feature fromthe first configuration; the final price is associated with the product;and the final price is generated by the electrical circuits in responseto the selection removing the feature from the first configuration. 42.The method of claim 38 wherein: the computer system of the user is aclient computer system; the first delta price is generated by a servercomputer system, the first delta price is generated in response to themodification of one or more of features of the first configuration ofthe product at the client computer system, and the client computersystem is communicatively coupled to the server computer system.
 43. Themethod of claim 42 further comprising: providing the final price to theclient computer system for display by the client computer system. 44.The method of claim 38 wherein: the base price is generated in responseto a selection of the first configuration of the product, and the firstdelta price is generated in response to at least one member of a groupconsisting of: addition of one or more features to the firstconfiguration, removal of one or more features of the firstconfiguration, and substitution of one or more features of the firstconfiguration with one or more additional features of the firstconfiguration.
 45. The method of claim 35 wherein: the product isselected from a group consisting of: one or more services, one or moregoods, and one or more goods and services.
 46. The method of claim 35further comprising: receiving with the electronic input/output device atleast a modification of one or more features of the second configurationof the product; receiving electronic signals from the memory to causethe electrical circuits to generate a second delta price for a thirdconfiguration of the product after receiving the modification of the oneor more features in the second configuration, wherein the thirdconfiguration is the second configuration as modified by the receivedmodification of the one or more features of the second configuration,the modification of the one or more features of the second configurationresults in a price change between the second configuration and the thirdconfiguration of the product, and the second delta price comprises theprice change between the second and third configurations of the product;receiving electronic signals from the memory to cause the electricalcircuits to generate a price of the third configuration using seconddelta price and the price of the second configuration; and receivingelectronic signals from the memory to cause the electrical circuits toprovide the price of the third configuration and the second delta priceto the computer system of the user to indicate to the user a pricingimpact associated with the modification of the one or more features ofthe second configuration of the product.
 47. The method of claim 46wherein: the computer system of the user is a client computer system;the first delta price and the second delta price are generated by aserver computer system; the first delta price is generated in responseto a first selection of a first feature at the client computer system;the second delta price is generated in response to a second selection ofa second feature at the client computer system; and the client computersystem is communicatively coupled to the server computer system.
 48. Themethod of claim 47 further comprising: receiving electronic signals fromthe memory to cause the electrical circuits to generate a final price ofthe third configuration using a base price of the first configurationand the second delta price; and receiving electronic signals from thememory to cause the electrical circuits to provide the final price tothe client computer system for display by the client computer system toallow comparison between the final price and the price of the secondconfiguration.
 49. The method of claim 44 wherein modification of theone or more features of the first configuration further comprises addingmultiple features to the first configuration.
 50. The method of claim 44wherein modification of the second configuration further comprises atleast one member of a group consisting of: adding multiple features tothe second configuration and removing at least one of the features ofthe second configuration.
 51. The method of claim 35 wherein themodification of the one or more features of the first configurationcomprises at least one member of a group consisting of: addition of oneor more features to the first configuration, removal of one or morefeatures of the first configuration, and substitution of one or morefeatures of the first configuration with one or more additional featuresof the first configuration.
 52. The method of claim 35 wherein a uniquefeature is a feature not common to both the first and secondconfigurations of the product, each unique feature has an individualprice, and the price difference does not equal an aggregate of eachindividual price for each unique feature.